package com.feisuanyz.service;

import com.feisuanyz.dto.NotificationDTO;
import com.feisuanyz.dto.NotificationQuery;
import com.feisuanyz.dto.RestResult;
import com.feisuanyz.query.UpdateNotificationStatusQuery;
import com.feisuanyz.query.ViewNotificationQuery;

/**
 * <p>
 *   通知管理业务逻辑接口
 * </p>
 * @author 23265
 */
public interface NotificationService {

    /**
     * 查看通知
     * @param query 查看通知查询对象
     * @return 通知数据传输对象
     */
    NotificationDTO viewNotification(ViewNotificationQuery query);

    /**
     * 更新通知可用状态
     * @param query 更新通知状态查询对象
     * @param userId 当前用户ID
     * @return 通知数据传输对象
     */
    NotificationDTO updateNotificationStatus(UpdateNotificationStatusQuery query, Integer userId);

    /**
     * 创建通知
     * @param notificationQuery 通知查询对象
     * @return 操作结果
     */
    RestResult<Void> createNotification(NotificationQuery notificationQuery);

    /**
     * 编辑通知
     * @param notificationQuery 通知查询对象
     * @return 操作结果
     */
    RestResult<Void> editNotification(NotificationQuery notificationQuery);

    /**
     * 删除通知
     * @param notificationId 通知ID
     * @param deleteBy 删除者ID
     * @return 操作结果
     */
    RestResult<Void> deleteNotification(Integer notificationId, Integer deleteBy);
}